package com.explorati.LeetCode350.intersect;

import java.util.*;

/**
 * @ Author : Weijian_Wang
 * @ Date : Created in 22:17 2020/10/27 0027
 * @ Description ：
 */
public class Solution {
    /**
     * 给定两个数组，编写一个函数来计算它们的交集。
     *
     * 输入：nums1 = [1,2,2,1], nums2 = [2,2]
     * 输出：[2,2]
     * @param nums1
     * @param nums2
     * @return
     */
    public int[] intersect(int[] nums1, int[] nums2) {
        Map<Integer, Integer> map = new HashMap<>(nums1.length);
        for(int nums : nums1) {
            if(map.containsKey(nums)) {
                map.put(nums, map.get(nums) + 1);
            }else {
                map.put(nums, 1);
            }
        }

        List<Integer> list = new ArrayList<>();
        for(int nums : nums2) {
            if(map.containsKey(nums)) {
                if(map.get(nums) != 0) {
                    list.add(nums);
                    map.put(nums, map.get(nums) - 1);
                }
            }
        }

        int[] result = new int[list.size()];
        for(int i = 0; i < list.size(); i ++) {
            result[i] = list.get(i);
        }
        return result;
    }
}
